<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  <script>
    /*
      认识字符串 - String
        + 在内存中存储的时候是 基本数据类型
        + 在 JS 内, 字符串也是 包装数据类型
          => 在你使用这个字符串的时候, 会被瞬间转换成复杂数据类型存储
          => 当你使用完毕以后, 会瞬间转换会基本数据类型存储
          => 转换成复杂数据类型是为了让你使用方便

      字符的存储
        + 都是按照 二进制 存储的
        + ASCII 编码
          => 0 ~ 127    128 个
        + 各个国家在 ASCII 编码的基础上, 编制了各个国家的编码
          => 问题: 乱 ?
        + 把所有的编码放在一起, 形成了一个 unicode 编码
          => 世界上大部分国家的文字都有
          => 4e00 - 9fa5

      字符串的创建
        1. 字面量方式创建
          => var s = 'hello world'
          => var s = "hello world"
          => var s = `hello world`
        2. 内置构造函数方式创建
          => var s = new String('hello world')

      字符串的存储
        + 也是按照索引进行排列的

      字符串的基本操作
        1. length 属性
          + 只读
          + 语法: 字符串.length
          + 得到: 该字符串的长度, 也就是该字符串由多少个字符组成
        2. 索引 属性
          + 只读
          + 语法: 字符串[索引]
          + 得到: 字符串该索引位置的字符(完全把字符串当做一个复杂数据类型来看待)
            => 如果有这个索引位置, 那么就是这个索引位置的 字符
            => 如果没有这个索引位置, 那么是 undefined
        3. 遍历
          + 因为字符串也是按照索引排列
          + 依旧使用循环进行遍历
    */

    // 1. 字面量方式创建
    // var s1 = 'hello world'
    // var s2 = "hello world"
    // var s3 = `hello world`
    // console.log(s1)
    // console.log(s2)
    // console.log(s3)

    // 2. 内置构造函数方式创建
    // var s4 = new String('hello world')
    // console.log(s4)
    // console.log(s1 == s4)


    // 3. 字符串的基本操作
    // var s = 'hello world'
    // console.log(s)
    // console.log(s.length)

    // var s = 'hello world'
    // console.log(s)
    // console.log(s[4])
    // console.log(s[100])

    // var s = 'hello world'
    // for (var i = 0; i < s.length; i++) {
    //   console.log(s[i])
    // }

  </script>
</body>
</html>
